package com.jwxt;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 数据库查询类
 * 用于查询数据库中的数据
 * 通过调用该类的方法，可以查询数据库中的数据
 */
public class DatabaseQuery {

    private static final String driver = "com.mysql.jdbc.Driver";
    private static final String url = "jdbc:mysql://localhost:3306/jwxt?useSSL=false";
    private static final String username = "root";
    private static final String password = "123456";


    private static Connection conn = null;
    private static Statement stmt = null;
    private static ResultSet rs = null;
    private static ResultSetMetaData metaData = null;

    /**
     * 连接数据库
     */
    private static void DataBaseConnection() {
        try {
            // 加载数据库驱动
            Class.forName(driver);
            // 获取数据库连接
            conn = DriverManager.getConnection(url, username, password);
            // 创建数据库查询对象
            stmt = conn.createStatement();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 关闭数据库连接
     */
    private static void DataBaseClose() {
        try {
            if (rs != null) {
                rs.close();
            }
            if (stmt != null) {
                stmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (Exception ignored) {

        }
    }

    /**
     * 查询数据库中的数据
     *
     * @param sql 查询语句
     * @return 查询结果列表
     */
    public static List<List<String>> query(String sql) {
        try {
            // 连接数据库
            DataBaseConnection();
            // 执行数据库查询语句
            rs = stmt.executeQuery(sql);
            // 获取查询结果的列数
            metaData = rs.getMetaData();
            int columnCount = metaData.getColumnCount();

            List<List<String>> resultList = new ArrayList<>();

            // 处理查询结果
            while (rs.next()) {
                List<String> row = new ArrayList<>();
                for (int i = 1; i <= columnCount; i++) {
                    String result = rs.getString(i);
                    row.add(result);
                }
                resultList.add(row);
            }

            // 关闭数据库连接
            DataBaseClose();
            // 返回查询结果列表
            return resultList;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 插入/更新/删除数据
     *
     * @param sql 插入/更新/删除语句
     * @return 是否成功
     */
    public static boolean execute(String sql) {
        try {
            // 连接数据库
            DataBaseConnection();
            // 执行数据库插入语句
            int rowsAffected = stmt.executeUpdate(sql);
            // 关闭数据库连接
            DataBaseClose();
            // 返回是否成功
            return rowsAffected != 0;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 查询数据库中的数据
     *
     * @param sql 查询语句
     * @return 查询结果列表
     */
//    public static List<List<String>> query(String sql) {
//        List<List<String>> resultList = new ArrayList<>();
//        Connection conn = null;
//        Statement stmt = null;
//        ResultSet rs = null;
//
//        try {
//            // 加载数据库驱动
//            Class.forName(driver);
//            // 获取数据库连接
//            conn = DriverManager.getConnection(url, username, password);
//            // 创建数据库查询对象
//            stmt = conn.createStatement();
//            // 执行数据库查询语句
//            rs = stmt.executeQuery(sql);
//            // 获取查询结果的列数
//            ResultSetMetaData metaData = rs.getMetaData();
//            int columnCount = metaData.getColumnCount();
//
//            // 处理查询结果
//            while (rs.next()) {
//                List<String> row = new ArrayList<>();
//                for (int i = 1; i <= columnCount; i++) {
//                    String result = rs.getString(i);
//                    row.add(result);
//                }
//                resultList.add(row);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            try {
//                if (rs != null) {
//                    rs.close();
//                }
//                if (stmt != null) {
//                    stmt.close();
//                }
//                if (conn != null) {
//                    conn.close();
//                }
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//        }
//        // 返回查询结果列表
//        return resultList;
//    }
}